#include <iostream>

#include "mprpcapplication.h" // 包含框架的配置头文件
#include "friend.pb.h"

int main(int argc, char **argv)
{
    // 整个程序启动以后， 想使用mprpc框架来享受rpc服务调用，一定需要先调用框架的初始化函数(只初始化一次)
    MprpcApplication::Init(argc, argv);

    fixbug::FriendServiceRpc_Stub stub(new MprpcChannel());

    // rpc方法的请求参数
    fixbug::GetFriendsListRequest request;
    request.set_userid(1000);

    // rpc方法的响应参数
    fixbug::GetFriendsListResponse response;

    // 定义一个conntroller的具体实例
    MprpcController controller;

    // 发起rpc方法的调用 ， 同步的rpc调用过程 MprpcChannel::callmethod
    stub.GetFriendsList(&controller, &request, &response, nullptr);

    // 一次rpc调用完成后， 读取调用 的结果
    if (controller.Failed())
    {
        std::cout << controller.ErrorText() << std::endl;
    }
    else
    {
        if (0 == response.result().errcode())
        {
            std::cout << "rpc GetFriendsLists response success!" << std::endl;
            int size = response.friends_size();
            for (int i = 0; i < size; ++i)
            {
                std::cout << "index:" << i + 1 << " name:" << response.friends(i) << std::endl;
            }
        }
        else
        {
            std::cout << "rpc GetFriendsLists response error:" << response.result().errmsg() << std::endl;
        }
    }

    return 0;
}